SQL 문 INSERT INTO SELECT은 한 테이블의 데이터를 복사하여 다른 테이블에 삽입합니다.
INSERT INTO SELECT 문을 사용하려면 소스 테이블과 대상 테이블의 데이터 유형이 일치해야 합니다.
한 테이블의 모든 열을 다른 테이블로 복사합니다.
INSERT INTO table2
SELECT *
FROM table1
WHERE condition
한 테이블에서 다른 테이블로 일부 열만 복사합니다.
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition
이 튜토리얼에서는 유명한 예제 데이터베이스 "Northwind"을 사용합니다.
다음은 "Customers"("고객") 테이블의 샘플입니다.
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
그리고 "Suppliers"("공급업체") 테이블의 샘플은 다음과 같습니다.
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
다음 SQL 쿼리는 "Suppliers"("공급업체")를 "Customers"("고객")에 복사합니다(데이터가 채워지지 않은 열에는 NULL이 포함됨).
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
SQL 쿼리의 또 다른 버전은 "Suppliers" 테이블의 데이터를 "Customers"로 복사합니다(모든 열을 채움).
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers
다음 SQL 문은 독일 공급자만 Customers 테이블에 복사합니다.
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany'